//----------------------------------------------------------------------------
//
// (C) Copyrights MARIN/MSCN  2004 
//
//----------------------------------------------------------------------------
//
// $Source: $
//
// $State: Exp $
//
// $Locker:  $
//
// $Revision: 1.2 $
//
// $Date: 2003/03/25 12:52:15 $
//
// $Author: mscn $
//
// $Contractor: $
//
// $Project: $
//
// $Log: generic.h,v $
//
// $Description: $
//
// $End: $
//
//----------------------------------------------------------------------------

#ifndef __mst_sys_generic_h__
#define __mst_sys_generic_h__

#ifndef MST_FPCLASSF
#define MST_FPCLASSF(x) fpclassify(x)
#endif

#ifndef MST_FPCLASSD
#define MST_FPCLASSD(x) fpclassify(x)
#endif

#ifndef MST_FINITEF
#define MST_FINITEF(x) (::finite(x) != 0)
#endif

#ifndef MST_FINITED
#define MST_FINITED(x) (::finite(x) != 0)
#endif

#ifndef MST_SQRTF
#define MST_SQRTF(x) ::sqrt(x)
#endif

#ifndef MST_SQRTD
#define MST_SQRTD(x) ::sqrt(x)
#endif

#ifndef MST_ASINHF
#define MST_ASINHF(x) ::asinh(x)
#endif

#ifndef MST_ACOSHF
#define MST_ACOSHF(x) ::acosh(x)
#endif

#ifndef MST_ATANHF
#define MST_ATANHF(x) ::atanh(x)
#endif

#ifndef MST_ASINHD
#define MST_ASINHD ::asinh
#endif

#ifndef MST_ACOSHD
#define MST_ACOSHD(x) ::acosh(x)
#endif

#ifndef MST_ATANHD
#define MST_ATANHD(x) ::atanh(x)
#endif

#ifndef MST_SINHF
#define MST_SINHF(x) ::sinh(x)
#endif

#ifndef MST_SINHD
#define MST_SINHD(x) ::sinh(x)
#endif

#ifndef MST_COSHF
#define MST_COSHF(x) ::cosh(x)
#endif

#ifndef MST_COSHD
#define MST_COSHD(x) ::cosh(x)
#endif

#ifndef MST_TANHF
#define MST_TANHF(x) ::tanh(x)
#endif

#ifndef MST_TANHD
#define MST_TANHD(x) ::tanh(x)
#endif

#ifndef MST_SINF
#define MST_SINF(x) ::sin(x)
#endif

#ifndef MST_SIND
#define MST_SIND(x) ::sin(x)
#endif

#ifndef MST_COSF
#define MST_COSF(x) ::cos(x)
#endif

#ifndef MST_COSD
#define MST_COSD(x) ::cos(x)
#endif

#ifndef MST_TANF
#define MST_TANF(x) ::tan(x)
#endif

#ifndef MST_TAND
#define MST_TAND(x) ::tan(x)
#endif

#ifndef MST_ASINF
#define MST_ASINF(x) ::asin(x)
#endif

#ifndef MST_ACOSF
#define MST_ACOSF(x) ::acos(x)
#endif

#ifndef MST_ATANF
#define MST_ATANF(x) ::atan(x)
#endif

#ifndef MST_ASIND
#define MST_ASIND(x) ::asin(x)
#endif

#ifndef MST_ACOSD
#define MST_ACOSD(x) ::acos(x)
#endif

#ifndef MST_ATAND
#define MST_ATAND(x) ::atan(x)
#endif

#ifndef MST_LOG10D
#define MST_LOG10D(a) ::log10(a)
#endif

#ifndef MST_CEILF
#define MST_CEILF(a) ::ceil(a)
#endif

#ifndef MST_CEILD
#define MST_CEILD(a) ::ceil(a)
#endif

#ifndef MST_FLOORF
#define MST_FLOORF(a) ::floor(a)
#endif

#ifndef MST_FLOORD
#define MST_FLOORD(a) ::floor(a)
#endif

#ifndef MST_ROUNDF
#define MST_ROUNDF(a) ::round(a)
#endif

#ifndef MST_ROUNDD
#define MST_ROUNDD(a) ::round(a)
#endif

#ifndef MST_TRUNCD
#define MST_TRUNCD(a) ::trunc(a)
#endif

#ifndef MST_TRUNCF
#define MST_TRUNCF(a) ::trunc(a)
#endif

#ifndef MST_LOG10F
#define MST_LOG10F(a) ::log10(a)
#endif

#ifndef MST_LOGD
#define MST_LOGD(a) ::log(a)
#endif

#ifndef MST_EXPD
#define MST_EXPD(a) ::exp(a)
#endif

#ifndef MST_EXPF
#define MST_EXPF(a) ::exp(a)
#endif

#ifndef MST_LOGF
#define MST_LOGF(a) ::log(a)
#endif

#ifndef MST_FMODD
#define MST_FMODD(x,y) ::fmod(x,y)
#endif

#ifndef MST_FMODF
#define MST_FMODF(x,y) ::fmod(x,y)
#endif

#ifndef MST_ATAN2F
#define MST_ATAN2F(y,x) ::atan2(y,x)
#endif

#ifndef MST_ATAN2D
#define MST_ATAN2D(y,x) ::atan2(y,x)
#endif

#ifndef MST_POWF
#define MST_POWF(a,b) ::pow(a,b)
#endif

#ifndef MST_POWD
#define MST_POWD(a,b) ::pow(a,b)
#endif

#ifndef MST_ISNANF
#define MST_ISNANF(x) (isnan(x) != 0)
#endif

#ifndef MST_ISNAND
#define MST_ISNAND(x) (isnan(x) != 0)
#endif

#ifndef MST_SRAND
#define MST_SRAND(seed) ::srand(seed)
#endif

#ifndef MST_RAND
#define MST_RAND() ::rand()
#endif

#ifndef MST_DRAND48
#define MST_DRAND48() ::drand48()
#endif

#ifndef MST_SRAND48
#define MST_SRAND48(v) ::srand48(v)
#endif

#endif

